const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';
const JWT_TOKEN = 'your_jwt_token_here'; // 替换为实际的JWT token

// 设置请求头
const headers = {
  'Authorization': `Bearer ${JWT_TOKEN}`,
  'Content-Type': 'application/json'
};

// 测试自动创建订单功能
async function testAutoOrder(shortsId, chapterId) {
  try {
    console.log(`🎬 测试自动创建订单 - 短剧${shortsId}章节${chapterId}...`);
    
    const response = await axios.get(
      `${BASE_URL}/shorts/chapter/video/${shortsId}/${chapterId}`,
      { headers }
    );
    
    console.log('✅ 获取成功:', JSON.stringify(response.data, null, 2));
    
    // 格式化输出
    const data = response.data;
    console.log(`\n📺 短剧ID: ${data.shortsId}`);
    console.log(`📖 章节ID: ${data.chapterId}`);
    console.log(`📝 章节标题: ${data.title}`);
    console.log(`🎥 视频URL: ${data.videoUrl || '暂无'}`);
    console.log(`🖼️ 封面: ${data.coverUrl || '暂无'}`);
    console.log(`⏱️ 时长: ${data.duration || 0}分钟`);
    console.log(`🔢 排序: ${data.sort}`);
    console.log(`💎 原积分: ${data.originalPoints}`);
    console.log(`💎 有效积分: ${data.effectivePoints}`);
    console.log(`👑 VIP用户: ${data.isVip ? '是' : '否'}`);
    console.log(`💰 免费: ${data.isFree ? '是' : '否'}`);
    
    // 订单信息
    if (data.orderInfo) {
      console.log(`📋 订单ID: ${data.orderInfo.orderId}`);
      console.log(`💎 扣除积分: ${data.orderInfo.points}`);
      console.log(`📅 创建时间: ${new Date(data.orderInfo.createdAt).toLocaleString()}`);
      console.log(`📊 订单状态: ${data.orderInfo.status}`);
    } else {
      console.log(`📋 订单信息: 免费章节，无需订单`);
    }
    
    console.log(`💬 消息: ${data.message}`);
    
    return response.data;
  } catch (error) {
    console.error('❌ 获取失败:', error.response?.data || error.message);
    
    if (error.response?.status === 403) {
      const errorData = error.response.data;
      if (errorData.message && errorData.message.includes('积分不足')) {
        console.log('💡 提示: 用户积分不足，无法创建订单');
        console.log(`   需要积分: ${errorData.message.match(/需要(\d+)积分/)?.[1] || '未知'}`);
        console.log(`   当前积分: ${errorData.message.match(/当前只有(\d+)积分/)?.[1] || '未知'}`);
      } else {
        console.log('💡 提示: 创建订单失败，请稍后重试');
      }
    } else if (error.response?.status === 400) {
      console.log('💡 提示: 请检查短剧ID和章节ID是否正确');
    } else if (error.response?.status === 401) {
      console.log('💡 提示: 请检查JWT token是否有效');
    }
    
    return null;
  }
}

// 测试VIP用户自动创建订单
async function testVipAutoOrder() {
  console.log('\n👑 测试VIP用户自动创建订单...\n');
  
  // 测试VIP用户访问付费章节
  await testAutoOrder(1, 2);
}

// 测试普通用户自动创建订单
async function testNormalUserAutoOrder() {
  console.log('\n👤 测试普通用户自动创建订单...\n');
  
  // 测试普通用户访问付费章节
  await testAutoOrder(1, 3);
}

// 测试积分不足的情况
async function testInsufficientPoints() {
  console.log('\n⚠️  测试积分不足的情况...\n');
  
  // 这里需要测试一个积分要求很高的章节
  // 或者先消耗用户积分，再测试
  console.log('💡 提示: 需要先消耗用户积分，再测试积分不足的情况');
  await testAutoOrder(1, 4);
}

// 测试重复访问（已有订单）
async function testExistingOrder() {
  console.log('\n🔄 测试重复访问（已有订单）...\n');
  
  // 第一次访问，创建订单
  console.log('1️⃣ 第一次访问，创建订单...');
  const firstResult = await testAutoOrder(1, 2);
  
  if (firstResult) {
    console.log('\n' + '─'.repeat(50));
    
    // 第二次访问，应该返回已有订单
    console.log('2️⃣ 第二次访问，返回已有订单...');
    const secondResult = await testAutoOrder(1, 2);
    
    if (secondResult && secondResult.orderInfo) {
      console.log('✅ 重复访问成功，返回已有订单信息');
      console.log(`   订单ID: ${secondResult.orderInfo.orderId}`);
      console.log(`   扣除积分: ${secondResult.orderInfo.points}`);
    }
  }
}

// 主测试函数
async function runAutoOrderTests() {
  console.log('🚀 开始测试自动创建订单功能...\n');
  
  if (JWT_TOKEN === 'your_jwt_token_here') {
    console.log('⚠️  请先设置有效的JWT token');
    console.log('   在脚本中修改 JWT_TOKEN 变量的值\n');
    return;
  }
  
  // 1. 测试VIP用户自动创建订单
  await testVipAutoOrder();
  
  console.log('\n' + '='.repeat(60));
  
  // 2. 测试普通用户自动创建订单
  await testNormalUserAutoOrder();
  
  console.log('\n' + '='.repeat(60));
  
  // 3. 测试重复访问
  await testExistingOrder();
  
  console.log('\n' + '='.repeat(60));
  
  // 4. 测试积分不足
  await testInsufficientPoints();
  
  console.log('\n✨ 自动创建订单功能测试完成！');
  console.log('\n💡 测试要点:');
  console.log('   - VIP用户自动创建订单，扣除0积分');
  console.log('   - 普通用户自动创建订单，扣除原积分');
  console.log('   - 积分不足时返回错误信息');
  console.log('   - 重复访问返回已有订单信息');
  console.log('   - 自动更新观看次数');
}

// 运行测试
runAutoOrderTests().catch(console.error); 